package com.meilai.project.service.personnel.org;

import com.baomidou.mybatisplus.extension.service.IService;
import com.meilai.project.dto.personnel.org.DepartmentDTO;
import com.meilai.project.entity.personnel.org.Department;
import com.meilai.project.vo.personnel.org.DepartmentWithJobVO;
import com.meilai.project.vo.system.WebDepartmentForChooseVO;
import com.meilai.project.vo.personnel.org.WebDepartmentListVO;
import com.meilai.project.vo.system.WebDepartmentVO;

import java.util.List;

public interface DepartmentService extends IService<Department> {

    /**
     * 根据id网上查找
     *
     * @param id
     * @return
     */
    List<Department> select2TopById(long id);

    List<WebDepartmentVO> selectPageList(String name, Integer status);

    List<WebDepartmentForChooseVO> getForChooseList();

    /**
     * 获取部门及其所有子孙部门
     *
     * @param department_id 部门id
     * @return 此部门及其子孙部门id列表
     */
    List<Long> getChildrenIdsById(Long department_id);

    // 新增
    Boolean addOne(DepartmentDTO dto);

    // 编辑
    Boolean editOne(DepartmentDTO dto);

    // 删除
    Boolean del(List<Long> ids);

    // 更新状态
    Boolean changeStatus(Long id, Integer status);

    // 更新状态
    Boolean changeAccounting(Long id, boolean accounting);

    // 获取用户所在的部门
    List<WebDepartmentListVO> getDepartmentsByUserId(Long user_id);

    /**
     * 查询部门列表
     *
     * @param doorId     主库用户id
     * @param tenantName 数据源名称
     */
    List<DepartmentWithJobVO> getDepartmentVOs(Long doorId, String tenantName);

    List<Department> getCompany();

    /**
     * 根据部门ID获取部门完整名称 (根部门名称除外)
     *
     * @param id
     * @return
     */
    String getDeptCompleteNameById(Long id);
}
